﻿using HPPClientLibrary;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.IO;
namespace HPP.UnitTest
{
    
    
    /// <summary>
    ///这是 Hash_MD5Test 的测试类，旨在
    ///包含所有 Hash_MD5Test 单元测试
    ///</summary>
    [TestClass()]
    public class Hash_MD5Test
    {


        private TestContext testContextInstance;

        /// <summary>
        ///获取或设置测试上下文，上下文提供
        ///有关当前测试运行及其功能的信息。
        ///</summary>
        public TestContext TestContext
        {
            get
            {
                return testContextInstance;
            }
            set
            {
                testContextInstance = value;
            }
        }

        #region 附加测试属性
        // 
        //编写测试时，还可使用以下属性:
        //
        //使用 ClassInitialize 在运行类中的第一个测试前先运行代码
        //[ClassInitialize()]
        //public static void MyClassInitialize(TestContext testContext)
        //{
        //}
        //
        //使用 ClassCleanup 在运行完类中的所有测试后再运行代码
        //[ClassCleanup()]
        //public static void MyClassCleanup()
        //{
        //}
        //
        //使用 TestInitialize 在运行每个测试前先运行代码
        //[TestInitialize()]
        //public void MyTestInitialize()
        //{
        //}
        //
        //使用 TestCleanup 在运行完每个测试后运行代码
        //[TestCleanup()]
        //public void MyTestCleanup()
        //{
        //}
        //
        #endregion

        

        #region Cal

        /*

        /// <summary>
        ///Calc 的测试
        ///
        ///输入：fileFullName为空
        ///预期输出：null
        ///<remarks>
        ///freelife:2009-8-26
        ///</remarks>
        ///</summary>
        [TestMethod()]
        public void Test_fileFullName_is_null()
        {
            MD5Algorithm target = new MD5Algorithm(); // TODO: 初始化为适当的值
            string fileFullName = null; // TODO: 初始化为适当的值
            string expected = null; // TODO: 初始化为适当的值
            string actual;
            actual = target.Calc(fileFullName);
            Assert.AreEqual(expected, actual);            
        }

        /// <summary>
        ///Calc 的测试
        ///
        ///输入：fileFullName的路径不正确
        ///预期输出：null
        ///<remarks>
        ///freelife:2009-8-26
        ///</remarks>
        ///</summary>
        [TestMethod()]
        public void Test_fileFullName_is_not_right()
        {
            MD5Algorithm target = new MD5Algorithm(); // TODO: 初始化为适当的值
            string fileFullName = "c:\test.txt"; // TODO: 初始化为适当的值
            string expected = null; // TODO: 初始化为适当的值
            string actual;
            actual = target.Calc(fileFullName);
            Assert.AreEqual(expected, actual);
        }

        /// <summary>
        ///Calc 的测试
        ///
        ///输入：fileFullName正确
        ///预期输出：test.txt对应的hash值
        ///<remarks>
        ///freelife:2009-8-26
        ///</remarks>
        ///</summary>
        [TestMethod()]
        public void Test_fileFullName_is_right()
        {
            StreamWriter sr;
            string fileName = "test.txt";
            if (!File.Exists(fileName))//首先创建一个test.txt文件，并填上内容
            {
                sr = File.CreateText(fileName);
                string text = "我们是705的HPP团队";
                sr.Write(text);
                sr.Close();                
            }                    
           
            MD5Algorithm target = new MD5Algorithm(); // TODO: 初始化为适当的值
            string fileFullName = "test.txt"; // TODO: 初始化为适当的值
            string expected = "F51ACF6BE8CD05A77CCC9D8233C389D6"; // 这个哈希值是在测试前已经获得
            string actual;
            actual = target.Calc(fileFullName);
            Assert.AreEqual(expected, actual);
            //File.Delete("test.txt");无法删除这个文件，因为还没有释放对这个文件资源的使用
        }
         * 
         */
        #endregion
    }
}
